{% extends 'base.html' %}
{% block title %}Services{% endblock %}
{% block nav-item-3 %}layui-nav-itemed{% endblock %}
{% block nav-child-3-1 %}layui-this{% endblock%}
{% block content %}
{% csrf_token %}
<span class="layui-breadcrumb">
    <a href="#">首页</a>
    <a href="#">负载均衡</a>
    <a><cite>Services</cite></a>
</span>
<hr class="layui-border-red">
<div class="layui-card">
    <div class="layui-card-body">
        <div class="layui-row layui-col-space10">
            <div class="layui-col-md12">
                <a class="layui-btn" style="float: left" href="{% url 'service_create' %}" target="_self" rel="opener">创建</a>
                <input type="text" name="name" class="layui-input" style="width: 150px;float: left;margin-left: 5px">
                <button class="layui-btn" style="float:left" id="searchBtn">搜索</button>
            </div>

            <div class="layui-col-md12">
                <table id="test" lay-filter="test"></table>
                <script type="text/html" id="barDemo">
                  <a class="layui-btn layui-btn-xs layui-btn-primary" lay-event="yaml">YAML</a>
                  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
                </script>
            </div>
        </div>
    </div>
</div>
{% endblock %}
{% block js %}
<script>

// 获取当前命名空间
var storage = window.sessionStorage;
var namespace = storage.getItem('namespace');

layui.use('table', function () {
    var table =  layui.table;
    var $ = layui.jquery;
    // 动态渲染表格
    table.render({
        elem: '#test'
        ,url: '{% url 'service_api' %}?namespace=' + namespace
        ,toolbar: '#toolbarDemo'  // 开启头部工具栏，并为其绑定左侧模板
        ,defaultToolbar: ['filter', 'exports', 'print', {   // 自定义头部工具栏右侧图标。如无需自定义，去除参数即可
            title: '提示'
            ,layEvent: 'LAYTABLE_TIPS'
            ,icon: 'layui-icon-tips'
        }]
        ,page: true  //开启分页
        ,cols: [[  //表头
            {field: 'name', title: '名称', sort: true}
            ,{field: 'namespace', title: '命名空间',width: 100, sort: true}
            ,{field: 'type', title: '类型',width: 100, sort: true}
            ,{field: 'cluster_ip', title: '集群IP',width: 120}
            ,{field: 'ports', title: '端口信息',templet: portsFormat}
            ,{field: 'labels', title: '标签', templet: labelsFormat}
            ,{field: 'selector', title: 'Pod 标签选择器', templet: selecotrFormat, width: 150}
            ,{field: 'endpoint', title: 'Pod', width: 80}
            ,{field: 'create_time', title: '创建时间',width: 170}
            ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
        ]]
        ,id: "TT"
    });
    // 标签格式化
    function labelsFormat(d) {
        result = "";
        if(d.labels == null){
            return "None"
        } else {
            for (let key in d.labels) {
                result += '<span style="border: 1px solid #d6e5ec;border-radius: 8px">' +
                    key + ':' + d.labels[key] +
                    '</span><br>'
            }
            return result
        }
    }
    function selecotrFormat(d) {
        result = "";
        for (let key in d.selector) {
            result += '<span style="border: 1px solid #d6e5ec;border-radius: 8px">' +
                key + ':' + d.selector[key] +
                   '</span><br>'
        }
        return result
    }
    function portsFormat(d) {
        result = "";
        for (let key in d.ports) {
            data = d.ports[key];
            result += '名称: ' + data.port_name + '<br>' +
                    '端口: ' + data.port + '<br>' +
                    '协议: ' + data.protocol + '<br>' +
                    '容器端口: ' + data.target_port + '<br>'
        }
        return result
    }
    // 监听行工具事件
    table.on('tool(test)', function (obj) {
        var data = obj.data;
        //console.log(obj)
        if (obj.event === 'del'){
            layer.confirm('你真要删除' + data.name + 'Service吗？', function (index) {
                var csrf_token = $('[name="csrfmiddlewaretoken"]').val();
                $.ajax({
                    type: "DELETE",
                    url: "{% url 'service_api' %}",
                    data: data,
                    headers: {'X-CSRFToken': csrf_token},
                    success: function (res) {
                        if (res.code == 0) {
                            obj.del();   // 删除当前页面数据
                            layer.msg(res.msg,{icon: 6, time: 3000})  //默认停顿3秒
                        } else {
                            layer.msg(res.msg,{icon: 5})
                        }
                    },
                    error: function () {
                        layer.open({
                            type: 0,
                            title: ['异常信息'],
                            content: "服务器接口异常！"
                        })
                    }
                });
                layer.close(index);
            });
        } else if (obj.event === 'yaml') {
            // 查看YAML
            layer.open({
                title: "YAML",
                type: 2,  //从一个网址加载
                area: ["50%", "60%"],
                content: '{% url 'ace_editor' %}?resource=service&' + 'namespace=' + data.namespace + '&name=' + data.name
            })
        }
    });
    // 监听搜索事件
    $('#searchBtn').click(function () {
        var search_key = $('input[name="name]').val()
        table.reload('TT', {
            where: {
                search_key: search_key
            }
        });
    })
});
</script>
{% endblock %}